/**
 * HTTP相关枚举
 */

/**
 * HTTP状态码枚举
 */
export enum HttpStatusCode {
  /** 成功 */
  OK = 200,
  /** 创建成功 */
  CREATED = 201,
  /** 无内容 */
  NO_CONTENT = 204,
  /** 重定向 */
  MOVED_PERMANENTLY = 301,
  /** 临时重定向 */
  FOUND = 302,
  /** 未修改 */
  NOT_MODIFIED = 304,
  /** 错误请求 */
  BAD_REQUEST = 400,
  /** 未授权 */
  UNAUTHORIZED = 401,
  /** 禁止访问 */
  FORBIDDEN = 403,
  /** 未找到 */
  NOT_FOUND = 404,
  /** 方法不允许 */
  METHOD_NOT_ALLOWED = 405,
  /** 请求超时 */
  REQUEST_TIMEOUT = 408,
  /** 冲突 */
  CONFLICT = 409,
  /** 内部服务器错误 */
  INTERNAL_SERVER_ERROR = 500,
  /** 服务不可用 */
  SERVICE_UNAVAILABLE = 503,
  /** 网关超时 */
  GATEWAY_TIMEOUT = 504,
}

/**
 * HTTP请求方法枚举
 */
export enum HttpMethod {
  /** GET请求 */
  GET = 'GET',
  /** POST请求 */
  POST = 'POST',
  /** PUT请求 */
  PUT = 'PUT',
  /** DELETE请求 */
  DELETE = 'DELETE',
  /** PATCH请求 */
  PATCH = 'PATCH',
  /** HEAD请求 */
  HEAD = 'HEAD',
  /** OPTIONS请求 */
  OPTIONS = 'OPTIONS',
}

/**
 * 内容类型枚举
 */
export enum ContentType {
  /** JSON格式 */
  JSON = 'application/json',
  /** 表单格式 */
  FORM = 'application/x-www-form-urlencoded',
  /** 文件上传格式 */
  MULTIPART = 'multipart/form-data',
  /** 纯文本格式 */
  TEXT = 'text/plain',
  /** HTML格式 */
  TEXT_HTML = 'text/html',
  /** XML格式 */
  XML = 'application/xml',
}

/**
 * 请求状态枚举
 */
export enum RequestStatus {
  /** 等待中 */
  PENDING = 'pending',
  /** 加载中 */
  LOADING = 'loading',
  /** 成功 */
  SUCCESS = 'success',
  /** 失败 */
  ERROR = 'error',
  /** 已取消 */
  CANCELLED = 'cancelled',
}

/**
 * 缓存策略枚举
 */
export enum CacheStrategy {
  /** 不缓存 */
  NO_CACHE = 'no-cache',
  /** 缓存优先 */
  CACHE_FIRST = 'cache-first',
  /** 网络优先 */
  NETWORK_FIRST = 'network-first',
  /** 仅缓存 */
  CACHE_ONLY = 'cache-only',
  /** 仅网络 */
  NETWORK_ONLY = 'network-only',
}

/**
 * 认证类型枚举
 */
export enum AuthType {
  /** Bearer Token */
  BEARER = 'Bearer',
  /** Basic Auth */
  BASIC = 'Basic',
  /** API Key */
  API_KEY = 'ApiKey',
}
